﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
using System.Net.Mail;

namespace C.Unite
{
    public class ToolHelper
    {
        /// <summary>
        /// 发送短信
        /// </summary>
        /// <param name="content">发送内容</param>
        /// <param name="telstring">号码串</param>
        /// <returns></returns>
        public static string sendTelMes(string content, string telstring)
        {
            telapi.webService ws = new telapi.webService();
            return ws.taskSubmit("", "23492", StringHelper.md5("22aa17cc", 32), telstring, content, "utf-8", "");
        }

        /// <summary>
        /// 获取IP地址
        /// </summary>
        /// <returns></returns>
        public static string getIPAddress()
        {
            string result = String.Empty;

            result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            // 如果使用代理，获取真实IP 
            if (result != null && result.IndexOf(".") == -1)    //没有“.”肯定是非IPv4格式 
                result = null;
            else if (result != null)
            {
                if (result.IndexOf(",") != -1)
                {
                    //有“,”，估计多个代理。取第一个不是内网的IP。 
                    result = result.Replace(" ", "").Replace("'", "");
                    string[] temparyip = result.Split(",;".ToCharArray());
                    for (int i = 0; i < temparyip.Length; i++)
                    {
                        if (IsIPAddress(temparyip[i])
                            && temparyip[i].Substring(0, 3) != "10."
                            && temparyip[i].Substring(0, 7) != "192.168"
                            && temparyip[i].Substring(0, 7) != "172.16.")
                        {
                            return temparyip[i];    //找到不是内网的地址 
                        }
                    }
                }
                else if (IsIPAddress(result)) //代理即是IP格式 
                    return result;
                else
                    result = null;    //代理中的内容 非IP，取IP 
            }
            if (null == result || result == String.Empty)
                result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            if (result == null || result == String.Empty)
                result = System.Web.HttpContext.Current.Request.UserHostAddress;

            return result;
        }
        /// <summary>
        /// 判断是否是IP地址格式 0.0.0.0
        /// </summary>
        /// <param name="str1">待判断的IP地址</param>
        /// <returns>true or false</returns>
        private static bool IsIPAddress(string str1)
        {
            if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15) return false;

            string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";

            Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);
            return regex.IsMatch(str1);
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="email">接收邮件的邮箱地址</param>
        /// <param name="body">邮件内容</param>
        /// <param name="subject">邮件主题</param>
        public static void sendMail(string email, string body, string subject)
        {

            MailMessage msg = new MailMessage();

            msg.From = new MailAddress("artland_sh@sina.com");////填写一个126的邮箱
            msg.To.Add(email);
            msg.Subject = subject;

            msg.Body = body;

            msg.IsBodyHtml = true;

            SmtpClient client = new SmtpClient();
            client.Host = "smtp.sina.com";//发件方服务器地址
            client.Port = 25;//发件方端口

            NetworkCredential credetial = new NetworkCredential();
            credetial.UserName = "artland_sh@sina.com";
            credetial.Password = "artland123456";

            client.Credentials = credetial;//把证书交给代理。

            client.Send(msg);/////发送邮件
        }
    }
}
